//1.构建方块系统，使得长宽可调
//2.实现迷宫生成
//3.增加广度优先在迷宫生成之后
//4.增加其他算法，整理项目结构
//5.增加输出mp4功能
//这里是全局变量，随处可调用。

import java.util.PriorityQueue;//优先队列
import java.util.Arrays;
import java.util.Random;
import java.util.HashSet;
import java.util.Set;

Random random = new Random(100);

//通用变量
int rows,cols;
int w = 50;//迷宫方格的边长
Cell[] grid;//cell 数组
Cell current;//当前点
Cell start,end;//起点和终点
ArrayList<Cell> stack;//
ArrayList<Cell> route;//记录寻路算法路径,后入是队列，头入是栈

int steps = 1;//遍历点的个数/次数
int pathCount = 0;//路径长度
int methodCount = 0;//方法
int generateCount = 0;
boolean findpath = false;//是否找到路径

int delay_t = 0;//全局延迟
int end_delay = 3000;
boolean drawFinish = false;

//配色
color inner_path_c = #b6fee9;//内部路径
color outter_cover_c = #d9b3ff;//内部路径的覆盖色
color back_ground_c = color(1,100);//背景色
color wall_c = color(255);//墙壁色
color start_c = color(0, 0, 200, 150);
color end_c = color(244,0,0,200);
color search_head = #FFFDC0;


PFont myFont ;

int endFrame = 1000;
int endFrameCount = 0;

void setup(){
    background(20);//这个函数通常在draw()中使用来清除每一帧开始的显示窗口，但也可以在setup()中使用它来设置动画的第一帧的背景，或者如果背景只需要设置一次的话。
    strokeWeight( 2 );//线路宽度
    size(1000,1000);
    
    //width = 1080;
    tttt = 1;
    println(tttt);
    //width = 1080;
    cols = (int) (width / w);
    rows = (int) (height / w);
    String[] fontlist = PFont.list();
     printArray(fontlist);
    //迷宫方块先存入一维数组grid
    grid = new Cell[rows * cols ];//大小

    for(int i = 0; i < rows; ++ i){
        for(int j = 0; j < cols; ++ j){
            grid[i + j * cols] = new Cell(i,j);
        }
    }

    current = grid[0];//左上角cell
    stack = new ArrayList<Cell>();
    route = new ArrayList<Cell>();
    
    myFont = createFont("宋体",45,true);
    
    textFont (myFont);


    //头和尾
    start = grid[0];
    end = grid[grid.length - 1];
    route.add(start);
    
    //Astar
    Arrays.fill(dist, INF);//填充0x3F3F3F3F
    dist[0] = 0;
    heap.add(new PII (f(0),0)); 
    
    //djset
      for (int i = 0; i <= rows * cols; i++) {
           p[i] = i;
      }
    
  
}
boolean T = true;
void draw(){
    push();
    background(20);
   
  
    build(1);
   
   ////生成迷宫 
     
     pop();
     rec();
    
}
